package battle_obj

import (
	"autobattle/context"
)

type ICharacter interface {
	IObject
	SearchEnemy()
	Move()
	Attack()
	PlaySKill()
	AddBuff()
	RemoveBuff()
	Die()
}

type BattleProperty struct {
	Hp                 int32 // 生命值
	Mp                 int32 // 法力值
	Damage             int32 // 物理伤害
	Defence            int32 // 物理防御
	MagicDamage        int32 // 法术伤害
	MagicDefence       int32 // 法术防御
	Magnification      int32 // 伤害加成
	MagicMagnification int32 // 法术伤害加成
	Dodge              int32 // 闪避
	MagicDodge         int32 // 法术闪避
}

type Character struct {
	Property BattleProperty
	Context  *context.Context
}

func NewCharacter(property BattleProperty, context *context.Context) Character {
	return Character{Property: property, Context: context}
}

func (c Character) OnBattleStart() {
	//TODO implement me
	panic("implement me")
}

func (c Character) OnBattleEnd() {
	//TODO implement me
	panic("implement me")
}

func (c Character) OnBeforeEnterTurn() {
	//TODO implement me
	panic("implement me")
}

func (c Character) OnAfterEnterTurn() {
	//TODO implement me
	panic("implement me")
}

func (c Character) OnEnterTurn() {
	//TODO implement me
	panic("implement me")
}

func (c Character) SearchEnemy() {
	//TODO implement me
	panic("implement me")
}

func (c Character) Move() {
	//TODO implement me
	panic("implement me")
}

func (c Character) Attack() {
	//TODO implement me
	panic("implement me")
}

func (c Character) PlaySKill() {
	//TODO implement me
	panic("implement me")
}

func (c Character) AddBuff() {
	//TODO implement me
	panic("implement me")
}

func (c Character) RemoveBuff() {
	//TODO implement me
	panic("implement me")
}

func (c Character) Die() {
	//TODO implement me
	panic("implement me")
}
